﻿/**************************************
* Copyright by Spring Studio(http://springstudio.cn)
* 页面通用脚本库
***************************************/

/**
* 初始化一个xmlhttp对象
*/
function GetXmlHttp() {
    var xmlhttp = null;
    try {
        xmlhttp = new XMLHttpRequest();
    }
    catch (trymicrosoft) {
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (othermicrosoft) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (failed) {
                xmlhttp = null;
            }
        }
    }
    return xmlhttp;
}

/**
* 去掉字符串前后空格
*/
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ltrim = function() {
    return this.replace(/(^\s*)/g, "");
}
String.prototype.rtrim = function() {
    return this.replace(/(\s*$)/g, "");
}

/*
* 判断是否为正整数
*/
function checkNaturalNumber(str) {
    if (/^[0-9]+$/.test(str) && (str > 0)) {
        return true;
    }
    else {
        return false;
    }
}

function checkNonnegative(str) {
    if (/^[0-9]+$/.test(str)) {
        return true;
    }
    else {
        return false;
    }
}

/*
* 判断是否为日期格式（yyyy-MM-dd）
*/
function checkDateFormat(str) {
    var r = str.match(/^(\d{4})(-|\/)(\d{2})\2(\d{2})$/);
    if (r == null) {
        alert("日期格式不正确（必须是YYYY-MM-DD格式）");
        return false;
    }

    var d = new Date(r[1], r[3] - 1, r[4]);
    if (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]) {
        if (d.getFullYear() > 2100 || d.getFullYear() < 1900) {
            alert("输入错误，年份必须介于1900～2100之间！");
            return false;
        }
        return true;
    }
    else {
        alert("输入错误，日期逻辑有问题！");
        return false;
    }
}

/*
* 检查字符串中是否含有单引号和双引号（含有返回true）
*/
function checkQuot(str) {
    if (str.indexOf("'") > -1 || str.indexOf('"') > -1) {
        return true;
    }
    return false;
}

/*************************************************
* 提示信息模块 Start
**/

// 输出提示信息
document.write('<div id="tips" onclick="javascript:SetTipsDelay();" onmousemove="javascript:SetTipsDelay();" style="text-align:left; padding:5px 5px 5px 5px; overflow: auto; position: absolute; z-index: 100; left: 100px; top: 100px; visibility: hidden; border: 1px solid #82AAD4; background-color: #FFFFEC; FILTER: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color=#C0C0FF, Positive=true)"></div>');

var tipsDelay = 10;  // 提示信息显示延迟（全局变量）
var moveable = true;

// 设置时间延迟
function SetTipsDelay() {
    tipsDelay = 10;
}

// 时间循环器
function TimeCycle() {
    if (tipsDelay > 0) {
        tipsDelay = tipsDelay - 1;
    }
    setTimeout(TimeCycle, 200);
}

TimeCycle();  // 页面载入时，触发时间循环

// 页面鼠标移动时，总时间超时后，自动隐藏提示信息
function tipsmousemove() {
    if (tipsDelay <= 0) {
        HiddenTips();
    }
}
document.attachEvent('onmousemove', tipsmousemove); // 页面全局事件处理，增加document.onmousemove事件处理

// 页面单击时，隐藏提示信息
function tipsonclick() {
    if (tipsDelay <= 8) {
        HiddenTips();
    }
}
document.attachEvent('onclick', tipsonclick); // 页面全局事件处理，增加document.onclick事件处理

// 设置提示框大小及位置
function ResetTips() {
    // 清空大小及位置数值
    tips.style.left = "";
    tips.style.top = "";
    tips.style.width = "";
    tips.style.height = "";

    var x = document.body.scrollLeft + event.clientX;
    var y = document.body.scrollTop + event.clientY;

    // 设置提示框X轴大小及位置
    if (x < document.body.offsetWidth / 2 && tips.offsetWidth > document.body.offsetWidth - x) {
        tips.style.left = x + 10;
        tips.style.width = document.body.offsetWidth - x - 35;
    }
    else if (x > document.body.offsetWidth / 2 && tips.offsetWidth > x) {
        tips.style.width = x - 25;
        tips.style.left = x - tips.offsetWidth;
    }
    else if (x > document.body.offsetWidth / 2) {
        tips.style.left = x - tips.offsetWidth;
    }
    else {
        tips.style.left = x + 10;
    }

    // 设置提示框Y轴大小及位置
    if (y < document.body.offsetHeight / 2 && tips.offsetHeight > document.body.offsetHeight - y) {
        tips.style.top = y + 10;
        tips.style.height = document.body.offsetHeight - y - 35;
    }
    else if (y > document.body.offsetHeight / 2 && tips.offsetHeight > y) {
        tips.style.height = y - 25;
        tips.style.top = y - tips.offsetHeight;
    }
    else if (y > document.body.offsetHeight / 2) {
        tips.style.top = y - tips.offsetHeight;
    }
    else {
        tips.style.top = y + 10;
    }
}

// 显示或隐藏提示信息
function ShowTips(strTips) {
    if (tips.style.visibility == "hidden") {
        tips.innerHTML = strTips;

        SetTipsDelay();  // 设置延时
        ResetTips();  // 设置大小及位置
        tips.style.visibility = "visible";
    }
}

// 隐藏提示信息
function HiddenTips() {
    tips.style.visibility = "hidden";
    moveable = true;
}

// 提示信息跟随鼠标移动
function MoveTips() {
    if (tips.style.visibility == "visible" && moveable == true) {
        SetTipsDelay();  // 设置延时
        ResetTips();  // 设置大小及位置
    }
}

// 显示固定提示信息
function FixTips(strTips) {
    moveable = false;
    tips.innerHTML = '<div width="100%" align="right">'
						+ '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
						+ '[<a href="javascript:HiddenTips();">关闭</a>]</div>' + strTips;

    SetTipsDelay();  // 设置延时
    ResetTips();  // 设置大小及位置

    tips.style.visibility = "visible";
}

/**
* 提示信息模块 End
*************************************************/